// src/utils/encrypt.js
import CryptoJS from 'crypto-js';

// 加密密钥 - 相当于保险箱的密码
// 实际项目中这个应该从环境变量读取
const SECRET_KEY = 'restaurant-system-2024';

// 创建安全工具对象
export const security = {
  /**
   * 加密数据 - 给数据上锁
   * @param {Object} data 要加密的数据
   * @returns {string} 加密后的字符串（乱码）
   */
  encryptData(data) {
    try {
      console.log('🔐 正在加密数据:', data);
      const encrypted = CryptoJS.AES.encrypt(
        JSON.stringify(data), 
        SECRET_KEY
      ).toString();
      console.log('✅ 加密完成');
      return encrypted;
    } catch (error) {
      console.error('❌ 加密失败:', error);
      return null;
    }
  },

  /**
   * 解密数据 - 给数据开锁
   * @param {string} encryptedData 加密后的数据
   * @returns {Object} 解密后的原始数据
   */
  decryptData(encryptedData) {
    try {
      console.log('🔓 正在解密数据');
      const bytes = CryptoJS.AES.decrypt(encryptedData, SECRET_KEY);
      const decrypted = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
      console.log('✅ 解密完成:', decrypted);
      return decrypted;
    } catch (error) {
      console.error('❌ 解密失败:', error);
      return null;
    }
  },

  /**
   * 生成简单哈希 - 用于本地数据
   * @param {string} text 要哈希的文本
   * @returns {string} 哈希值
   */
  hash(text) {
    return CryptoJS.MD5(text).toString();
  }
};

// 测试加密解密（开发阶段可以保留，上线前删除）
console.log('🧪 测试加密功能...');
const testData = { phone: '13800138000', name: '测试用户' };
const encrypted = security.encryptData(testData);
console.log('加密结果:', encrypted);
const decrypted = security.decryptData(encrypted);
console.log('解密结果:', decrypted);